Conventional software applications rely on various operating system functions. An operating system may provide a set of application programming interfaces (APIs) for providing basic computational services, such as thread scheduling, memory allocation, virtual memory, device access, and so forth. Additionally, an operating system may provide a rich feature set of APIs that provide additional operating system services such as graphical user interface (GUI) services, clipboard services, and the like.
Certain security-enabled processors are capable of providing a secure execution environment. Such security-enabled processors provide a protected memory space, and the security-enabled processors ensure that code and data stored in the protected memory space is inaccessible by code outside the protected memory space. The security-enabled processor provides well-defined exit and entry functions, hereafter referred to as gates, that permit execution to pass between code inside the protected memory space and code outside environment. The security-enabled processor does not allow access to input or output devices or kernel-mode execution within the protected memory space. As a result, the protected memory areas of security-enabled processors are too restrictive to run conventional software applications.